package br.com.pheat.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import br.com.pheat.beans.Usuario;
import br.com.pheat.factory.ConnectionFactory;

public class UsuarioDAO {
	
	public void inserirUsuario(Usuario usuario)
			throws SQLException {

		//Abre uma conexao com o banco
		Connection conn = ConnectionFactory.getConnection();

		// define a SQL
		String sql = "INSERT INTO Usuario (nome, login, senha, altura, peso, calorias, email) VALUES(?,?,?,?,?,?,?)";

		// cria a o statement(SQL)
		PreparedStatement stmt = conn.prepareStatement(sql);

		// passa os valores para a SQL
		stmt.setString(1, usuario.getNome());
		stmt.setString(2, usuario.getLogin());
		stmt.setString(3, usuario.getSenha());
		stmt.setFloat(4, usuario.getAltura());
		stmt.setFloat(5, usuario.getPeso());
		stmt.setFloat(6, usuario.getCalorias());
		stmt.setString(7, usuario.getEmail());	
		
		// executa a SQL
		stmt.executeUpdate();

		// fecha o statement
		stmt.close();

		// fecha a conexao
		conn.close();
	}


	public static Usuario buscarPorUsuarioESenha(String login, String senha) throws SQLException{
		
		Usuario usuario = null;

		Connection conn = ConnectionFactory.getConnection();
		
		String sql = "select * from usuario where login = ? AND senha = ?";
		
		PreparedStatement stmt = conn.prepareStatement(sql);
		stmt.setString(1, login.toLowerCase());
		stmt.setString(2, senha);
		
		ResultSet rs = stmt.executeQuery();

		if(rs.next()){
			usuario = new Usuario();
			usuario.setCodigo(rs.getInt("codigo"));
			usuario.setNome(rs.getString("nome"));
			usuario.setLogin(rs.getString("login"));
			usuario.setSenha(rs.getString("senha"));
			usuario.setAltura(rs.getFloat("altura"));
			usuario.setPeso(rs.getFloat("peso"));
			usuario.setCalorias(rs.getFloat("calorias"));
			usuario.setEmail(rs.getString("email"));
		}

		stmt.close();
		rs.close();
		conn.close();
		return usuario;
	}

	public static boolean existeLogin(String login) throws SQLException, Exception{

		boolean existe = false;

		Connection conn = ConnectionFactory.getConnection();
		String sql = "select * from usuario where login = ?";

		PreparedStatement stmt = conn.prepareStatement(sql);
		stmt.setString(1, login.toLowerCase());
		
		ResultSet rs = stmt.executeQuery();

		if(rs.next())
			existe = true;
		
		rs.close();
		stmt.close();
		conn.close();
		return existe;
	}
	
	public static void atualizarUsuario(Usuario usuario) throws SQLException{		
	
		//Usuario usuario = null;       
		Connection conn = ConnectionFactory.getConnection();
		
		String sql = "update usuario set nome = ?, altura = ?, peso = ?, calorias = ?, email = ? where codigo = ?";
		
		//"select * from usuario where login = ? AND senha = ?";		
		
		// cria a o statement(SQL)
		PreparedStatement stmt = conn.prepareStatement(sql);
		
		// passa os valores para a SQL
		stmt.setString(1, usuario.getNome());
		stmt.setFloat(2, usuario.getAltura());
		stmt.setFloat(3, usuario.getPeso());
		stmt.setFloat(4, usuario.getCalorias());
		stmt.setString(5, usuario.getEmail());

		stmt.setInt(6, usuario.getCodigo());
		
		// executa a SQL
		stmt.executeUpdate();

		// fecha o statement
		stmt.close();

		// fecha a conexao
		conn.close();
	}
}